home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 6 / FM Towns Free Software Collection 6.iso / t_os / algernon / vil_uty.bas < prev    next >
BASIC Source File  |  1993-07-08  |  16KB  |  462 lines

  1. 50030 *VIL_UTY_VER
  2. 50035 VIL_VER=100
  3. 50040 RETURN
  4. 50070 *VIL_SYSCNF_INITM
  5. 50120 VIL_VWX(10)=VIL_W0    :VIL_VWY(10)=VIL_W1
  6. 50125 VIL_VWW(10)=VIL_W0+111:VIL_VWZ(10)=VIL_W1+79
  7. 50135 RETURN
  8. 50145 *VIL_SYSCNF
  9. 50185 VIL_VWN=10:VIL_VWAT=15:VIL_VWT$="SYSTEM"
  10. 50190 GOSUB *VIL_VWOPEN
  11. 50195 SYMBOL(8, 8),"システム設定",1,1,6
  12. 50200 SYMBOL(8,36),"1 BGM設定",1,1,7
  13. 50205 SYMBOL(8,56),"2 色設定    ",1,1,7
  14. 50215 VIL_BCE=0:VIL_VWMR=0:VIL_KN=-1
  15. 50220 WHILE VIL_VWMR<>2
  16. 50225   VIL_X=4:VIL_Y=34:VIL_W=VIL_X+103:VIL_Z=VIL_Y+19
  17. 50230   VIL_YL=20:VIL_XN=1:VIL_YN=2:VIL_BXDIR=0:VIL_C=15:VIL_MN=10
  18. 50235   GOSUB *VIL_MSEL
  19. 50240   IF VIL_KN<0 THEN
  20. 50245     GOSUB *VIL_VWMCHECK
  21. 50250   ELSE IF VIL_KN=0 THEN
  22. 50255     GOSUB *VIL_VWCLOSE:VIL_VWMR=2
  23. 50260   ELSE
  24. 50265     GOSUB *VIL_GBEEP
  25. 50270     ON VIL_KN GOSUB *VIL_BGM,*VIL_COLCNF
  26. 50275     VIL_VWMR=0
  27. 50280   ENDIF
  28. 50285 WEND
  29. 50290 RETURN
  30. 50320 *VIL_COLCNF_INITM
  31. 50390 VIL_INT=VIL_W4
  32. 50395 VIL_INTINIT=VIL_W4
  33. 50400 DIM VIL_P(2)
  34. 50405 DIM VIL_VWP(2)
  35. 50410 DIM VIL_VWPINIT(2)
  36. 50415 VIL_VWP(0)=VIL_W5:VIL_VWPINIT(0)=VIL_W5
  37. 50420 VIL_VWP(1)=VIL_W6:VIL_VWPINIT(1)=VIL_W6
  38. 50425 VIL_VWP(2)=VIL_W7:VIL_VWPINIT(2)=VIL_W7
  39. 50435 GOSUB *VIL_COLCNF_INIT
  40. 50445 VIL_VWX(20)=VIL_W0    :VIL_VWY(20)=VIL_W1
  41. 50450 VIL_VWW(20)=VIL_W0+159:VIL_VWZ(20)=VIL_W1+99
  42. 50455 VIL_VWX(21)=VIL_W2    :VIL_VWY(21)=VIL_W3
  43. 50460 VIL_VWW(21)=VIL_W2+159:VIL_VWZ(21)=VIL_W3+99
  44. 50465 RETURN
  45. 50475 *VIL_COLCNF_INIT
  46. 50515 VIL_INT=VIL_INTINIT
  47. 50520 IF VIL_INT THEN VIL_K=255 ELSE VIL_K=192
  48. 50525 GOSUB *VIL_INTSET
  49. 50530 VIL_VWP(0)=VIL_VWPINIT(0)
  50. 50535 VIL_VWP(1)=VIL_VWPINIT(1)
  51. 50540 VIL_VWP(2)=VIL_VWPINIT(2)
  52. 50545 GOSUB *VIL_WPALSET
  53. 50550 RETURN
  54. 50560 *VIL_WPALSET
  55. 50600 PALETTE 1,[VIL_VWP(0)-80+(VIL_VWP(0)<80)*(VIL_VWP(0)-80)                             ,VIL_VWP(1)-80+(VIL_VWP(1)<80)*(VIL_VWP(1)-80)                              ,VIL_VWP(2)-80+(VIL_VWP(2)<80)*(VIL_VWP(2)-80)],1
  56. 50605 PALETTE 2,[VIL_VWP(0),VIL_VWP(1),VIL_VWP(2)],1
  57. 50610 PALETTE 3,[VIL_VWP(0)+80+(VIL_VWP(0)>175)*(VIL_VWP(0)-175)                            ,VIL_VWP(1)+80+(VIL_VWP(1)>175)*(VIL_VWP(1)-175)                            ,VIL_VWP(2)+80+(VIL_VWP(2)>175)*(VIL_VWP(2)-175)],1
  58. 50615 RETURN 
  59. 50625 *VIL_COLCNF
  60. 50715 VIL_VWN=20:VIL_VWAT=15:VIL_VWT$="COLOR"
  61. 50720 GOSUB *VIL_VWOPEN
  62. 50725 SYMBOL(8, 8),"   色設定   ",1,1,6
  63. 50730 SYMBOL(8,36),"1 表示 ["+KMID$("低高",1-VIL_INT,1)+"輝度]",1,1,7
  64. 50735 SYMBOL(8,56),"2 パレット初期化",1,1,7
  65. 50740 SYMBOL(8,76),"3 ウィンドウ色設定",1,1,7
  66. 50750 VIL_BCE=0:VIL_VWMR=0:VIL_KN=-1
  67. 50755 WHILE VIL_VWMR<>2
  68. 50760   VIL_X=4:VIL_Y=34:VIL_W=VIL_X+151:VIL_Z=VIL_Y+19
  69. 50765   VIL_YL=20:VIL_XN=1:VIL_YN=3:VIL_BXDIR=0:VIL_C=15:VIL_MN=20
  70. 50770   GOSUB *VIL_MSEL
  71. 50775   IF VIL_KN<0 THEN
  72. 50780     GOSUB *VIL_VWMCHECK
  73. 50785   ELSE IF VIL_KN=0 THEN
  74. 50790     GOSUB *VIL_VWCLOSE:VIL_VWMR=2
  75. 50795   ELSE
  76. 50800     GOSUB *VIL_GBEEP
  77. 50805     ON VIL_KN GOSUB 50855,*VIL_COLCNF_INIT,50885
  78. 50810     VIL_X=88:VIL_Y=36:VIL_L=2:VIL_C=15:VIL_CB=VIL_VWCB
  79. 50815     VIL_A$=KMID$("低高",1-VIL_INT,1)
  80. 50820     GOSUB *VIL_GPRINT
  81. 50825     VIL_VWMR=0
  82. 50830   ENDIF
  83. 50835 WEND
  84. 50840 RETURN
  85. 50855 VIL_INT=NOT VIL_INT
  86. 50860 IF VIL_INT THEN VIL_K=255 ELSE VIL_K=192
  87. 50865 GOSUB *VIL_INTSET
  88. 50870 RETURN
  89. 50885 VIL_P(0)=VIL_VWP(0):VIL_P(1)=VIL_VWP(1):VIL_P(2)=VIL_VWP(2):VIL_P=2
  90. 50890 GOSUB *VIL_PALCNF
  91. 50895 VIL_VWP(0)=VIL_P(0):VIL_VWP(1)=VIL_P(1):VIL_VWP(2)=VIL_P(2)
  92. 50900 GOSUB *VIL_WPALSET
  93. 50905 RETURN
  94. 50915 *VIL_INTSET
  95. 50955 PALETTE  9,[    0,    0,VIL_K],1
  96. 50960 PALETTE 10,[    0,VIL_K,    0],1
  97. 50965 PALETTE 11,[    0,VIL_K,VIL_K],1
  98. 50970 PALETTE 12,[VIL_K,    0,    0],1
  99. 50975 PALETTE 13,[VIL_K,    0,VIL_K],1
  100. 50980 PALETTE 14,[VIL_K,VIL_K,    0],1
  101. 50985 PALETTE 15,[VIL_K,VIL_K,VIL_K],1
  102. 50990 RETURN
  103. 51000 *VIL_PALCNF
  104. 51065 VIL_VWN=21:VIL_VWAT=15:VIL_VWT$="PALETTE"
  105. 51070 GOSUB *VIL_VWOPEN
  106. 51075 SYMBOL(32,8),"パレット設定",1,1,6
  107. 51080 LINE(  8,8)-( 23,24),PSET,%VIL_P,BF
  108. 51085 LINE(136,8)-(151,24),PSET,%VIL_P,BF
  109. 51095 GOSUB 51330
  110. 51100 FOR VIL_I=2 TO 0 STEP -1
  111. 51105   SYMBOL( 8,VIL_I*20+36),MID$("GRB",3-VIL_I,1),1,1,4-VIL_I+(VIL_I>0)
  112. 51110   SYMBOL(16,VIL_I*20+36),"(  )",1,1,7
  113. 51115   FOR VIL_J=1 TO 3
  114. 51120     LINE(VIL_BXX(VIL_I*3+VIL_J)+2,VIL_BXY(VIL_I*3+VIL_J)+2)                         -(VIL_BXW(VIL_I*3+VIL_J)-2,VIL_BXZ(VIL_I*3+VIL_J)-2),PSET,7,B
  115. 51125   NEXT
  116. 51130   SYMBOL( 48,VIL_I*20+36),"〈",1,1,7
  117. 51135   SYMBOL(141,VIL_I*20+36),"〉",1,1,7
  118. 51140   GOSUB 51280
  119. 51145 NEXT
  120. 51155 VIL_BCE=0:VIL_VWMR=0:VIL_KN=-1
  121. 51160 WHILE VIL_VWMR<>2
  122. 51165   VIL_XN=3:VIL_YN=3:VIL_BXDIR=4:VIL_C=15:VIL_MN=21
  123. 51170   GOSUB *VIL_MSELIN
  124. 51175   IF VIL_KN<0 THEN
  125. 51180     GOSUB *VIL_VWMCHECK
  126. 51185     GOSUB 51330
  127. 51190   ELSE IF VIL_KN=0 THEN
  128. 51195     GOSUB *VIL_VWCLOSE:VIL_VWMR=2
  129. 51200   ELSE
  130. 51205     VIL_I=2-(VIL_KN-1)\3
  131. 51210     VIL_J=VIL_KN MOD 3
  132. 51215     IF VIL_J=2 THEN
  133. 51225     ELSE
  134. 51230       VIL_P(VIL_I)=VIL_P(VIL_I)+((VIL_J=1)-(VIL_J=0))*16
  135. 51235       VIL_P(VIL_I)=VIL_P(VIL_I)                                                                +((255<VIL_P(VIL_I))-(VIL_P(VIL_I)<0))*256
  136. 51240     ENDIF
  137. 51245     GOSUB 51280
  138. 51250     PALETTE VIL_P,[VIL_P(0),VIL_P(1),VIL_P(2)],1
  139. 51255   ENDIF
  140. 51260 WEND
  141. 51265 RETURN
  142. 51280 VIL_X=24:VIL_Y=VIL_I*20+36
  143. 51285 VIL_A$=FNVIL_P2SS$(VIL_P(VIL_I)\16,2):VIL_L=2:VIL_C=15:VIL_CB=VIL_VWCB
  144. 51290 GOSUB *VIL_GPRINT
  145. 51295 LINE(72,VIL_I*20+37)-(131,VIL_I*20+50),PSET,%VIL_VWCB,BF
  146. 51300 IF VIL_P(VIL_I)\16 THEN
  147. 51305   LINE(72,VIL_I*20+37)-(71+(VIL_P(VIL_I)\16)*4,VIL_I*20+50),PSET                   ,4-VIL_I+(VIL_I>0),BF
  148. 51310 ENDIF
  149. 51315 RETURN
  150. 51330 FOR VIL_I=0 TO 2
  151. 51335   VIL_BXX(VIL_I*3+1)= 50:VIL_BXY(VIL_I*3+1)=74-VIL_I*20
  152. 51340   VIL_BXW(VIL_I*3+1)= 69:VIL_BXZ(VIL_I*3+1)=93-VIL_I*20
  153. 51345   VIL_BXX(VIL_I*3+2)= 69:VIL_BXY(VIL_I*3+2)=74-VIL_I*20
  154. 51350   VIL_BXW(VIL_I*3+2)=134:VIL_BXZ(VIL_I*3+2)=93-VIL_I*20
  155. 51355   VIL_BXX(VIL_I*3+3)=134:VIL_BXY(VIL_I*3+3)=74-VIL_I*20
  156. 51360   VIL_BXW(VIL_I*3+3)=153:VIL_BXZ(VIL_I*3+3)=93-VIL_I*20
  157. 51365 NEXT
  158. 51370 RETURN
  159. 51405 *VIL_BGM_INITM
  160. 51450 VIL_VWX(30)=VIL_W0   :VIL_VWY(30)=VIL_W1
  161. 51455 VIL_VWW(30)=VIL_W0+96:VIL_VWZ(30)=VIL_W1+79
  162. 51465 RETURN
  163. 51475 *VIL_BGM
  164. 51555 VIL_VWN=30:VIL_VWAT=15:VIL_VWT$="BGM"
  165. 51560 GOSUB *VIL_VWOPEN
  166. 51565 SYMBOL(8, 8),"BGM設定",1,1,6
  167. 51570 SYMBOL(8,36),"1 FM音源",1,1,7
  168. 51575 SYMBOL(8,56),"2 CDDA",1,1,7
  169. 51585 VIL_BCE=0:VIL_VWMR=0:VIL_KN=-1
  170. 51590 WHILE VIL_VWMR<>2
  171. 51595   VIL_X=4:VIL_Y=34:VIL_W=VIL_X+87:VIL_Z=VIL_Y+19
  172. 51600   VIL_YL=20:VIL_XN=1:VIL_YN=2:VIL_BXDIR=0:VIL_C=15:VIL_MN=30
  173. 51605   GOSUB *VIL_MSEL
  174. 51610   IF VIL_KN<0 THEN
  175. 51615     GOSUB *VIL_VWMCHECK
  176. 51620   ELSE IF VIL_KN=0 THEN
  177. 51625     GOSUB *VIL_VWCLOSE:VIL_VWMR=2
  178. 51630   ELSE
  179. 51635     GOSUB *VIL_GBEEP
  180. 51640     ON VIL_KN GOSUB *VIL_BGMFM,*VIL_BGMCD
  181. 51645     VIL_VWMR=0
  182. 51650   ENDIF
  183. 51655 WEND
  184. 51660 RETURN
  185. 51690 *VIL_BGMFM_INITM
  186. 51750 DIM VIL_FM0$(VIL_W4),VIL_FM1$(VIL_W4)
  187. 51755 DIM VIL_FM2$(VIL_W4),VIL_FM3$(VIL_W4)
  188. 51760 DIM VIL_FM4$(VIL_W4),VIL_FM5$(VIL_W4)
  189. 51765 DIM VIL_FMT$(VIL_W5)
  190. 51770 DIM VIL_FMN$(VIL_W5)
  191. 51780 VIL_FMF=0
  192. 51785 VIL_FMSP=0
  193. 51790 VIL_FMLS=-1
  194. 51795 VIL_FMLB=0:VIL_FMLE=0:VIL_FMME=0
  195. 51800 VIL_FMTMAX=0
  196. 51805 VIL_VWX(31)=VIL_W0    :VIL_VWY(31)=VIL_W1
  197. 51810 VIL_VWW(31)=VIL_W0+175:VIL_VWZ(31)=VIL_W1+ 79
  198. 51815 VIL_VWX(32)=VIL_W2    :VIL_VWY(32)=VIL_W3
  199. 51820 VIL_VWW(32)=VIL_W2+287:VIL_VWZ(32)=VIL_W3+223
  200. 51830 GOSUB *VIL_FMTREAD
  201. 51835 RETURN
  202. 51845 *VIL_BGMFM
  203. 51930 VIL_VWN=31:VIL_VWAT=15:VIL_VWT$="BGM FM"
  204. 51935 GOSUB *VIL_VWOPEN
  205. 51940 IF VIL_CDF THEN GOSUB *VIL_CDOFF
  206. 51945 SYMBOL(8,8),"  FM音源BGM  ",1,1,6
  207. 51950 SYMBOL(8,36),"1 BGM ["+KMID$("OFFON ",1-VIL_FMF*3,3)+"]"                     ,1,1,7
  208. 51955 SYMBOL(8,56),"2 曲選択",1,1,7
  209. 51965 VIL_BCE=0:VIL_VWMR=0:VIL_KN=-1
  210. 51970 WHILE VIL_VWMR<>2
  211. 51975   VIL_X=4:VIL_Y=34:VIL_W=VIL_X+167:VIL_Z=VIL_Y+19
  212. 51980   VIL_YL=20:VIL_XN=1:VIL_YN=2:VIL_BXDIR=0:VIL_C=15:VIL_MN=31
  213. 51985   GOSUB *VIL_MSEL
  214. 51990   IF VIL_KN<0 THEN
  215. 51995     GOSUB *VIL_VWMCHECK
  216. 52000   ELSE IF VIL_KN=0 THEN
  217. 52005     GOSUB *VIL_VWCLOSE:VIL_VWMR=2
  218. 52010   ELSE
  219. 52015     GOSUB *VIL_GBEEP
  220. 52020     ON VIL_KN GOSUB 52070,*VIL_FMSEL
  221. 52025     VIL_X=104:VIL_Y=36:VIL_L=6:VIL_C=15:VIL_CB=VIL_VWCB
  222. 52030     VIL_A$=KMID$("OFFON ",1-VIL_FMF*3,3)
  223. 52035     GOSUB *VIL_GPRINT
  224. 52040     VIL_VWMR=0
  225. 52045   ENDIF
  226. 52050 WEND
  227. 52055 RETURN
  228. 52070 IF VIL_FMF THEN
  229. 52075   GOSUB *VIL_FMOFF
  230. 52080 ELSE
  231. 52085   IF VIL_FMINIT$="" THEN
  232. 52090     GOSUB *VIL_BBEEP
  233. 52100   ELSE
  234. 52105     GOSUB *VIL_FMON
  235. 52110   ENDIF
  236. 52115 ENDIF
  237. 52120 RETURN
  238. 52130 *VIL_FMSEL
  239. 52220 VIL_VWN=32:VIL_VWAT=15:VIL_VWT$="BGM SELECT"
  240. 52225 GOSUB *VIL_VWOPEN
  241. 52230 SYMBOL(8,8),"   FM音源BGM 曲選択",1,1,6
  242. 52240 GOSUB 52380
  243. 52250 VIL_BCE=0:VIL_VWMR=0:VIL_KN=-1
  244. 52255 WHILE VIL_VWMR<>2
  245. 52260   VIL_X=4:VIL_Y=34:VIL_W=VIL_X+279:VIL_Z=VIL_Y+19
  246. 52265   VIL_YL=20:VIL_XN=1:VIL_YN=9:VIL_BXDIR=0:VIL_C=15:VIL_MN=32
  247. 52270   GOSUB *VIL_MSEL
  248. 52275   IF VIL_KN<0 THEN
  249. 52280     GOSUB *VIL_VWMCHECK
  250. 52285   ELSE IF VIL_KN=0 THEN
  251. 52290     GOSUB *VIL_VWCLOSE:VIL_VWMR=2
  252. 52295   ELSE
  253. 52300     IF VIL_KN=9 THEN
  254. 52305       VIL_FMSP=VIL_FMSP+8:IF VIL_FMSP>VIL_FMTMAX THEN VIL_FMSP=0
  255. 52310       GOSUB 52380
  256. 52315     ELSE IF VIL_FMSP+VIL_KN-2<VIL_FMTMAX THEN
  257. 52320       VIL_W0=INSTR(VIL_FMN$(VIL_FMSP+VIL_KN-1),"/")
  258. 52325       VIL_F$=LEFT$(VIL_FMN$(VIL_FMSP+VIL_KN-1),VIL_W0-1)
  259. 52330       VIL_A$= MID$(VIL_FMN$(VIL_FMSP+VIL_KN-1),VIL_W0+1)
  260. 52340       GOSUB *VIL_FMDREAD
  261. 52345     ENDIF
  262. 52350     VIL_VWMR=0
  263. 52355   ENDIF
  264. 52360 WEND
  265. 52365 RETURN
  266. 52380 VIL_L=34:VIL_C=15:VIL_CB=VIL_VWCB
  267. 52385 FOR VIL_I=0 TO 7
  268. 52390   VIL_X=8:VIL_Y=VIL_I*20+36
  269. 52395   VIL_A$=HEX$(VIL_I+1)
  270. 52400   IF VIL_FMSP+VIL_I<=VIL_FMTMAX                                                   THEN VIL_A$=VIL_A$+" "+VIL_FMT$(VIL_FMSP+VIL_I)
  271. 52405   GOSUB *VIL_GPRINT
  272. 52410 NEXT
  273. 52415 SYMBOL(8,196),"9          ~ 次頁 ~",1,1,7
  274. 52420 RETURN
  275. 52430 *VIL_FMTREAD
  276. 52470 VIL_E=0
  277. 52475 OPEN "I",#1,VIL_FMTDIR$+"FM_TITLE.VIL"
  278. 52480 IF VIL_E=0 THEN
  279. 52485   INPUT #1,VIL_FMTMAX:VIL_FMTMAX=VIL_FMTMAX-1
  280. 52490     FOR VIL_I=0 TO VIL_FMTMAX
  281. 52495     LINE INPUT #1,VIL_FMT$(VIL_I)
  282. 52500     LINE INPUT #1,VIL_FMN$(VIL_I)
  283. 52505   NEXT
  284. 52510   CLOSE #1
  285. 52515 ENDIF
  286. 52520 RETURN
  287. 52530 *VIL_FMDREAD
  288. 52630 VIL_W0=VIL_FMF
  289. 52635 IF VIL_W0 THEN GOSUB *VIL_FMOFF
  290. 52640 VIL_A$=":"+VIL_A$
  291. 52645 IF LEFT$(VIL_F$,1)<>"\" AND MID$(VIL_F$,2,1)<>":" THEN
  292. 52650   VIL_F$=VIL_FMTDIR$+VIL_F$
  293. 52655 ENDIF
  294. 52660 OPEN "I",#1,VIL_F$
  295. 52665 GOSUB 52795:IF VIL_W0$<>VIL_A$ THEN 52665
  296. 52670 GOSUB 52795
  297. 52675 IF VIL_W0$="*" THEN
  298. 52680   LOAD@
  299. 52685 ELSE
  300. 52690   IF LEFT$(VIL_W0$,1)<>"\" AND MID$(VIL_W0$,2,1)<>":" THEN
  301. 52695     VIL_W0$=VIL_FMTDIR$+VIL_W0$
  302. 52700   ENDIF
  303. 52705   LOAD@ VIL_W0$
  304. 52710 ENDIF
  305. 52715 GOSUB 52795:VIL_FMLB=VAL(VIL_W0$)
  306. 52720 GOSUB 52795:VIL_FMLE=VAL(VIL_W0$)
  307. 52725 GOSUB 52795:VIL_FMME=VAL(VIL_W0$)
  308. 52730 GOSUB 52795:VIL_FMINIT$=VIL_W0$
  309. 52740 FOR VIL_I=0 TO VIL_FMME:GOSUB 52795:VIL_FM0$(VIL_I)=VIL_W0$:NEXT
  310. 52745 FOR VIL_I=0 TO VIL_FMME:GOSUB 52795:VIL_FM1$(VIL_I)=VIL_W0$:NEXT
  311. 52750 FOR VIL_I=0 TO VIL_FMME:GOSUB 52795:VIL_FM2$(VIL_I)=VIL_W0$:NEXT
  312. 52755 FOR VIL_I=0 TO VIL_FMME:GOSUB 52795:VIL_FM3$(VIL_I)=VIL_W0$:NEXT
  313. 52760 FOR VIL_I=0 TO VIL_FMME:GOSUB 52795:VIL_FM4$(VIL_I)=VIL_W0$:NEXT
  314. 52765 FOR VIL_I=0 TO VIL_FMME:GOSUB 52795:VIL_FM5$(VIL_I)=VIL_W0$:NEXT
  315. 52770 CLOSE #1
  316. 52775 IF VIL_W0 THEN GOSUB *VIL_FMON
  317. 52780 RETURN
  318. 52795 LINE INPUT #1,VIL_W0$:IF LEFT$(VIL_W0$,1)="'" THEN 52795
  319. 52800 RETURN
  320. 52810 *VIL_FMON
  321. 52850 VIL_FMF=-1:VIL_FMP=0:VIL_FMT=0
  322. 52855 PLAY VIL_FMINIT$
  323. 52860 GOSUB *VIL_FMDRV
  324. 52865 ON INTERVAL GOSUB *VIL_FMDRV:INTERVAL 1:INTERVAL ON
  325. 52870 RETURN
  326. 52880 *VIL_FMOFF
  327. 52920 VIL_FMF=0:INTERVAL OFF:PLAY OFF
  328. 52925 RETURN
  329. 52935 *VIL_FMDRV
  330. 52975 IF PLAY(1)>=VIL_FMP-1 THEN
  331. 52980   VIL_FMP=VIL_FMP+.125!
  332. 52985   PLAY VIL_FM0$(VIL_FMT),VIL_FM1$(VIL_FMT),VIL_FM2$(VIL_FMT),                      VIL_FM3$(VIL_FMT),VIL_FM4$(VIL_FMT),VIL_FM5$(VIL_FMT)
  333. 52990   VIL_FMT=VIL_FMT+1
  334. 52995   IF VIL_FMT>VIL_FMLE AND VIL_FMLS THEN VIL_FMT=VIL_FMLB
  335. 53000   IF VIL_FMT>VIL_FMME THEN INTERVAL OFF:VIL_FMF=0
  336. 53005 ENDIF
  337. 53010 RETURN
  338. 53155 *VIL_BGMCD_INITM
  339. 53200 DIM VIL_CDI%(5),VIL_CDS%(8)
  340. 53205 VIL_CDF=0
  341. 53210 VIL_CDTS=0
  342. 53215 VIL_CDMS=0
  343. 53220 VIL_CDPN=1
  344. 53225 VIL_VWX(33)=VIL_W0    :VIL_VWY(33)=VIL_W1
  345. 53230 VIL_VWW(33)=VIL_W0+243:VIL_VWZ(33)=VIL_W1+115
  346. 53240 RETURN
  347. 53250 *VIL_BGMCD
  348. 53340 VIL_VWN=33:VIL_VWAT=15:VIL_VWT$="BGM CD"
  349. 53345 GOSUB *VIL_VWOPEN
  350. 53350 IF VIL_FMF THEN GOSUB *VIL_FMOFF
  351. 53355 LINE(0,0)-(243,115),PSET,%2,BF
  352. 53360 SYMBOL(57,4),"CDDA BGM-PLAYER",1,1,4,,,3
  353. 53365 FOR VIL_I=26 TO 72 STEP 46
  354. 53370   FOR VIL_J=52 TO 152 STEP 50
  355. 53375     LINE(VIL_J,VIL_I)-(VIL_J+39,VIL_I+37),PSET,%VIL_VWCB,BF
  356. 53380   NEXT
  357. 53385 NEXT
  358. 53395 LINE(  6,72)-( 41,109),PSET,%VIL_VWCB,BF
  359. 53400 LINE(202,72)-(237,109),PSET,%VIL_VWCB,BF
  360. 53410 VIL_E=0
  361. 53415 CDINF VIL_CDI%
  362. 53420 IF VIL_E THEN
  363. 53425   VIL_WX=VIL_WX+2:VIL_WY=VIL_WY+64
  364. 53430   VIL_WW=VIL_WX+239:VIL_WZ=VIL_WY+31
  365. 53435   VIL_VWAT=0:VIL_VWT$="ERROR":VIL_VWN=0
  366. 53440   GOSUB *VIL_VWOPEN
  367. 53445   SYMBOL(8,8),"CDがセットされていません。",1,1,7
  368. 53450   GOSUB *VIL_MVWAIT
  369. 53455   GOSUB *VIL_VWCLOSE:GOSUB *VIL_VWCLOSE
  370. 53460 ELSE
  371. 53465   IF VIL_CDI%(1)=3 THEN VIL_CDI%(1)=2 
  372. 53470   IF VIL_CDPN<VIL_CDI%(1) THEN VIL_CDPN=VIL_CDI%(1)
  373. 53475   IF VIL_CDI%(5)<VIL_CDPN THEN VIL_CDPN=VIL_CDI%(1)
  374. 53485   SYMBOL( 56,28),"MODE",1,1,7
  375. 53490   SYMBOL(110,28),"BGM",1,1,7
  376. 53495   SYMBOL(156,28),"TEST",1,1,7
  377. 53500   SYMBOL( 57,76),"<",2,2,7
  378. 53505   SYMBOL(157,76),">",2,2,7
  379. 53510   SYMBOL(  8,76),FNVIL_P2S0$(VIL_CDI%(1),2),2,2,7
  380. 53515   SYMBOL(204,76),FNVIL_P2S0$(VIL_CDI%(5),2),2,2,7
  381. 53520   SYMBOL(106,76),FNVIL_P2S0$(VIL_CDPN,2),2,2,7
  382. 53525   GOSUB 53855
  383. 53530   GOSUB 53835
  384. 53540   VIL_BCE=0:VIL_VWMR=0:VIL_KN=-1
  385. 53545   WHILE VIL_VWMR<>2
  386. 53550     VIL_X=50:VIL_Y=24+46:VIL_W=VIL_X+43:VIL_Z=VIL_Y+41
  387. 53555     VIL_XL=50:VIL_YL=46:VIL_XN=3:VIL_YN=2:VIL_BXDIR=4:VIL_C=15
  388. 53560     VIL_MN=33
  389. 53565     GOSUB *VIL_MSEL
  390. 53570     IF VIL_KN<0 THEN
  391. 53575       GOSUB *VIL_VWMCHECK
  392. 53580     ELSE IF VIL_KN=0 THEN
  393. 53585       GOSUB *VIL_VWCLOSE:VIL_VWMR=2
  394. 53590     ELSE
  395. 53595       ON VIL_KN GOSUB 53725,53740,53815,53635,53655,53705
  396. 53600       VIL_VWMR=0
  397. 53605     ENDIF
  398. 53610   WEND
  399. 53615 ENDIF
  400. 53620 RETURN
  401. 53635 VIL_CDMS=NOT VIL_CDMS
  402. 53640 GOSUB 53855 
  403. 53645 RETURN
  404. 53655 VIL_CDF=NOT VIL_CDF
  405. 53660 IF VIL_CDF THEN
  406. 53665   INTERVAL 1:ON INTERVAL GOSUB *VIL_CDDRV:INTERVAL ON
  407. 53670   GOSUB *VIL_CDDRV
  408. 53675 ELSE
  409. 53680   INTERVAL OFF:CD STOP
  410. 53685 ENDIF
  411. 53690 GOSUB 53855
  412. 53695 RETURN
  413. 53705 VIL_CDTS=NOT VIL_CDTS
  414. 53710 GOSUB 53855
  415. 53715 RETURN
  416. 53725 VIL_CDPN=VIL_CDPN-1:IF VIL_CDPN<VIL_CDI%(1) THEN VIL_CDPN=VIL_CDI%(5)
  417. 53730 GOSUB 53830:RETURN
  418. 53740 VIL_WX=VIL_WX+64:VIL_WY=VIL_WY+32:VIL_WW=VIL_WX+111:VIL_WZ=VIL_WY+51
  419. 53745 VIL_VWAT=0:VIL_VWT$="INPUT":VIL_VWN=0
  420. 53750 GOSUB *VIL_VWOPEN
  421. 53755 SYMBOL(8,8),"トラック番号",1,1,6
  422. 53760 VIL_X=32:VIL_Y=28:VIL_L=2:VIL_C=15:VIL_CB=VIL_VWBC:VIL_A$=""
  423. 53765 GOSUB *VIL_INPSTR
  424. 53770 IF VIL_A$>"" THEN
  425. 53775   IF VAL(VIL_A$)<VIL_CDI%(1) OR VIL_CDI%(5)<VAL(VIL_A$) THEN
  426. 53780      GOSUB *VIL_BBEEP:GOTO 53765
  427. 53785   ENDIF
  428. 53790 ENDIF
  429. 53795 GOSUB *VIL_VWCLOSE
  430. 53800 IF VIL_A$>"" THEN VIL_CDPN=VAL(VIL_A$):GOSUB 53830
  431. 53805 RETURN
  432. 53815 VIL_CDPN=VIL_CDPN+1:IF VIL_CDPN>VIL_CDI%(5) THEN VIL_CDPN=VIL_CDI%(1)
  433. 53820 GOSUB 53830:RETURN
  434. 53830 IF VIL_CDTS=-1 THEN CD PLAY VIL_CDPN
  435. 53835 LINE(102,72)-(141,109),PSET,%VIL_VWCB,BF
  436. 53840 SYMBOL(106,76),FNVIL_P2S0$(VIL_CDPN,2),2,2,7
  437. 53845 RETURN
  438. 53855 LINE(60,46)-(83,61),PSET,%VIL_VWCB,BF
  439. 53860 SYMBOL(60,46),MID$("ONEALL",1-VIL_CDMS*3,3),1,1,7
  440. 53865 LINE(110,46)-(133,61),PSET,%VIL_VWCB,BF
  441. 53870 SYMBOL(110,46),MID$("OFFON",1-VIL_CDF*3,3),1,1,7
  442. 53875 LINE(162,46)-(185,61),PSET,%VIL_VWCB,BF
  443. 53880 SYMBOL(162,46),MID$("OFFON",1-VIL_CDTS*3,3),1,1,7
  444. 53885 RETURN
  445. 53895 *VIL_CDON
  446. 53935 VIL_CDF=-1
  447. 53940 GOSUB *VIL_CDDRV
  448. 53945 INTERVAL 1:ON INTERVAL GOSUB *VIL_CDDRV:INTERVAL ON
  449. 53950 RETURN
  450. 53960 *VIL_CDOFF
  451. 53995 VIL_CDF=0:INTERVAL OFF:CD STOP
  452. 54000 RETURN
  453. 54010 *VIL_CDDRV
  454. 54060 VIL_E=0
  455. 54065 CDSTAT VIL_CDS%
  456. 54070 IF VIL_E THEN
  457. 54075   VIL_CDF=0:INTERVAL OFF
  458. 54080 ELSE IF VIL_CDS%(1)=0 THEN
  459. 54085   IF VIL_CDMS THEN CD PLAY ELSE CD PLAY VIL_CDPN
  460. 54090 ENDIF
  461. 54095 RETURN
  462.